/*
 * Copyright (C), 2005-2018, 上海瑛麒动漫科技有限公司
 * FileName: RedissonMap.java
 * Author:   tianmu
 * Date:     2018年2月22日 下午5:32:59
 * Description: //模块目的、功能描述
 * History: //修改记录
 * <author>      <time>      <version>    <desc>
 * 修改人姓名             修改时间            版本号                  描述
 */
package com.sfang.common.redis.redisson;

import com.sfang.common.redis.sdk.RedisMap;
import org.redisson.api.RMap;
import org.redisson.api.RedissonClient;

import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;

/**
 * 〈一句话功能简述〉<br>
 * 〈功能详细描述〉
 *
 * @author tianmu
 * @see [相关类/方法]（可选）
 * @since [产品/模块版本] （可选）
 */
public class RedissonMap<K, V> implements RedisMap<K, V> {

    private final RMap<K, V> rMap;

    public RedissonMap(RedissonClient redissonClient, String key) {
        rMap = redissonClient.getMap(key);
    }

    @Override
    public void clear() {
        rMap.clear();
    }

    @Override
    public boolean containsKey(K key) {
        return rMap.containsKey(key);
    }

    @Override
    public <T> List mapFindByVal(String value) {
        return rMap.values().stream().collect(Collectors.toList());
    }

    @Override
    public long remainTimeToLive() {
        return rMap.remainTimeToLive();
    }

    @Override
    public boolean delete() {
        return rMap.delete();
    }

    @Override
    public boolean expire(long timeToLive, TimeUnit timeUnit) {
        return rMap.expire(timeToLive, timeUnit);
    }

    @Override
    public boolean expireAt(long timestamp) {
        return rMap.expireAt(timestamp);
    }

    @Override
    public V get(K key) {
        return rMap.get(key);
    }

    @Override
    public Map<K, V> getAll(Set<K> keys) {
        return rMap.getAll(keys);
    }

    @Override
    public boolean isEmpty() {
        return rMap.isEmpty();
    }

    @Override
    public boolean isExists() {
        return rMap.isExists();
    }

    @Override
    public V put(K key, V value) {
        return rMap.put(key, value);
    }

    @Override
    public void putAll(Map<K, V> m) {
        rMap.putAll(m);
    }

    @Override
    public Map<K, V> readAllMap() {
        return rMap.readAllMap();
    }

    @Override
    public V remove(K key) {
        return rMap.remove(key);
    }

    @Override
    public int size() {
        return rMap.size();
    }

    @Override
    public Set<K> getKeySet() {
        return rMap.keySet();
    }

}
